INTRODUÇÃO

O QUE É O PACOTE LEAFLET?


DEFINIÇÃO

O Leaflet é uma biblioteca JavaScript (JS) conhecida pela criação de excelentes mapas interativos. O pacote “leaflet” do R recebe o mesmo da biblioteca em JavaScript e é um facilitador da interação entre o R e as funções escritas em JS.

PRINCIPAIS FUNCIONALIDADES

  • Mapas: variedade de caratografia (providerTiles)
  • Pontos/Marcadores
  • Polígonos
  • Linhas

PRINCIPAIS VANTAGENS

  • Construção de mapas por camadas
  • Fácil interação com data frames
  • Pipe-friendly: código pode ser vinculado pelo pipe (%>%)
  • Gera arquivos em HTML (podem ser consumidos)
  • Pode ser integrado com RMarkdown, Shiny, Flexdashboard

CONSTRUINDO UM MAPA COM O LEAFLET —- MAPA BÁSICO I


CONHECIMENTOS ADQUIRIDOS

addTiles()

  • Função para escolher o mapa básico do pacote Leaflet (mapa padrão).

addMarkers()

  • Função para adicionar ao mapa um ponto no formato padrão do Leaflet.

CONSTRUINDO UM MAPA COM O LEAFLET —- MAPA BÁSICO II


CONHECIMENTOS ADQUIRIDOS

addProviderTiles()

  • Função para escolher o mapa de algum provedor disponível na internet:
  1. “CartoDB”: leve
  2. “OpenStreetMap”: pesado - google maps
  3. “CartoDB.Positron”
  4. “Stamen.Terrain”

addCircleMarkers()

  • Função para adicionar ao mapa marcadores em formato de círculo.

Label vs. Popup

  • Percebe-se que há uma diferença entre o label e o popup: enquanto o popup apresenta o nome escolhido para o ponto quando é clicado, o label o apresenta simplesmente ao passar o mouse sobre o ponto no mapa.

CONSTRUINDO UM MAPA COM O LEAFLET —- MAPA BÁSICO + FUNCIONALIDADES


CONHECIMENTOS ADQUIRIDOS

Zoom permitido ao usuário

  • É possível determinar qual o máx/min que o usuário poderá dar zoom e se poderá arrastar ou não no mapa.
  • options = leafletOptions(minZoom = zoom mínimo que permitiremos, dragging = se poderá mover para os lados ou não).

setView()

  • Função que permite escolher qual será o zoom que o usuário visualizará o mapa ao abrir o arquivo.

USANDO DATAFRAMES + PIPE COM O LEAFLET


CONHECIMENTOS ADQUIRIDOS

  1. É possível utilizar as colunas de uma dataframe como as fontes de latitude e longitude dos pontos a serem plotados no mapa.
  2. Para tanto, não é necessário que nenhuma das escolas possua um nome específico, mas somente sejam indicadas através de alguma das duas formas indicadas ao lado e explicadas abaixo:
  • Forma 1: é possível indicar as colunas através do subsetting normal ( $ ) de colunas.
  • Forma 2: é possível indicar as colunas através do acento til ( ~ ) somente se a dataFrame já estiver sido “passada” previamente pelo pipe ( %>% ).
  1. No entanto, caso uma coluna não seja indicada expressamente dentro do código o próprio pacote tentará descobrir quais as colunas contém os dados de longitude e latitude e, somente neste caso, o nome da coluna poderá servir de ajuda.

Quando usar cada forma?

  • Quando se está construindo um mapa que irá receber pontos oriundos de uma mesma dataFrame é melhor referenciar a dataFrame logo no início do código e depois utilizar o til para indicar as colunas.
  • Quando o mapa a ser construído irá conter muitas camadas, oriundas de diferentes dataFrames, então a única forma de construí-lo é indicando cada coluna através do subsetting formal ( $ ), pois mais de uma dataFrame será utilizada.

MAPAS DE PONTOS

CONSTRUINDO UM MAPA DE PONTOS —- BUSCADOR + LABEL’S


O QUE FOI FEITO?

  • Adicionamos uma ferramenta de buscador no mapa (existe também a possibilidade de inserir uma ferramenta de buscador para os dados inseridos - ler e testar documentação).

CONHECIMENTOS ADQUIRIDOS

Ferramenta Buscador

  • É possível permitir que usuário busque locais já georreferenciados pela biblioteca do Leaflet

Labels

  • É possível configurar os nomes do pontos de acordo com a necessidade do usuário. Além disso, conhecimentos básicos de HTML são de grande ajuda, uma vez que é possível estilizar as labels com algumas tags de HTML (ex: negrito, itálico, quebra de texto, sublinhado, cor).

CONSTRUINDO UM MAPA DE PONTOS —- GRUPOS DE PONTOS (CÓDIGO)


O QUE FOI FEITO?

  • Adicionamos a possibilidade do usuário navegar entre as diferentes camadas plotadas no mapa - podendo também escolher a sobreposição delas.

CONHECIMENTOS ADQUIRIDOS

addLayersControl()

  • Os layers de control são de diversos tipos, os que foram utilizados permite a navegação entre as diferentes camadas plotadas no mapa.
  • Essa possibilidade é bem interessante para permitir que o mapa fique mais leve de se utilizar e também reduza a poluição visual pela quantidade de pontos - basta que o usuário selecione as camadas que deseja.

CONSTRUINDO UM MAPA DE PONTOS —- GRUPOS DE PONTOS (MAPA)

CONSTRUINDO UM MAPA DE PONTOS —- CLUSTERIZAÇÃO NUMÉRICA


O QUE FOI FEITO?

  • Adicionamos uma clusterização numérica que permite identificar no mapa - pela cor e pelos números - onde estão concetrandos a maior parte dos pontos.
  • Além de permitir a fácil visualização de concentração, esse valor vai sendo ajustado ao zoom utilizado, bem como polígonos naturais se formam com o zoom.
  • É uma excelente maneira de tornar o mapa mais leve dentro do arquivo.

CONHECIMENTOS ADQUIRIDOS

clusterOptions = markerClusterOptions()

  • Insere a clusterização numérica dos pontos.

MAPAS DE POLÍGONOS

CONSTRUINDO UM MAPA COM POLÍGONOS —- MAPA BÁSICO (CÓDIGO)


O QUE FOI FEITO?

  • Adicionamos um polígono contendo os contornos de todas as regionais. Pelo código é possível perceber que - a imitação do ggplot - o mapa aceita muitas configurações. É possível estilizá-lo como cada um deseja, desde que se conheça bem a documentação do biblioteca.

CONHECIMENTOS ADQUIRIDOS

addPolygons()

  • Insere a os contornos das regionais a partir da dataFrame (arquivo .shp). Observa-se que, para os contornos, nem sempre é necessário indicar a coluna que contenha os dados, uma vez que o arquivo .shp é um tipo especial de dataFrame e o R já o reconhece assim.

CONSTRUINDO UM MAPA COM POLÍGONOS —- MAPA BÁSICO (MAPA)

MAPAS DE LINHAS

TRABALHANDO OS DADOS PARA PLOTAGEM - CONTINUAÇÃO


O QUE FOI FEITO?

  • Após isso, criamos uma coluna que sequencia os dados para intercalar uma coordenada da escola com uma coordenada de um aluno e assim até que para todos os alunos tenhamos uma linha com as coordenadas da escola.

PLOTAGEM DAS LINHAS


CONHECIMENTOS ADQUIRIDOS

addPolylines()

  • Insere linhas entre duas coordenadas.